// pages/profile/profile.js
const apiService = require('../../utils/apiService.js');
Page({
  data: {
    userInfo: {
      name: '林林子',
      desc: '森林子点餐达人',
      avatar: 'https://img.yzcdn.cn/vant/cat.jpeg',
      sessionCount: 12,
      templateCount: 3,
      dishCount: 156
    },
    recentSessions: [],
    myTemplates: []
  },

  onLoad() {
    // 使用统一的登录守卫
    const authGuard = require('../../utils/authGuard.js');
    
    // 个人中心页面需要登录
    if (!authGuard.onPageLoad('/pages/profile/profile')) {
      return;
    }
    
    this.loadUserInfo();
    this.loadRecentSessions();
    this.loadMyTemplates();
  },

  onShow() {
    // 使用统一的登录守卫
    const authGuard = require('../../utils/authGuard.js');
    
    // 个人中心页面需要登录
    if (!authGuard.onPageShow('/pages/profile/profile')) {
      return;
    }
    
    this.loadUserInfo();
    this.loadRecentSessions();
    this.loadMyTemplates();
  },

  // 加载用户信息
  async loadUserInfo() {
    try {
      // 调用API获取用户信息
      const userData = await apiService.getCurrentUser();
      
      // 根据API文档格式化用户信息
      this.setData({
        userInfo: {
          id: userData.id,
          name: userData.nickname || '用户',
          desc: userData.city ? `${userData.city}点餐达人` : '点餐达人',
          avatar: userData.avatar || 'https://img.yzcdn.cn/vant/cat.jpeg',
          phone: userData.phone || '',
          city: userData.city || '',
          province: userData.province || '',
          isActive: userData.is_active !== undefined ? userData.is_active : true,
          createdAt: userData.created_at || '',
          sessionCount: 0, // 这些数据需要从其他接口获取
          templateCount: 0,
          dishCount: 0
        }
      });
      
      // 同时加载统计数据
      await this.loadUserStats();
      
    } catch (error) {
      
      // 如果API失败，使用本地存储的用户信息
      const localUserInfo = wx.getStorageSync('userInfo');
      if (localUserInfo) {
        this.setData({
          userInfo: {
            id: localUserInfo.id || 0,
            name: localUserInfo.nickname || '用户',
            desc: localUserInfo.city ? `${localUserInfo.city}点餐达人` : '点餐达人',
            avatar: localUserInfo.avatar || 'https://img.yzcdn.cn/vant/cat.jpeg',
            phone: localUserInfo.phone || '',
            city: localUserInfo.city || '',
            province: localUserInfo.province || '',
            isActive: localUserInfo.is_active !== undefined ? localUserInfo.is_active : true,
            createdAt: localUserInfo.created_at || '',
            sessionCount: 0,
            templateCount: 0,
            dishCount: 0
          }
        });
      }
    }
  },

  // 加载用户统计数据
  async loadUserStats() {
    try {
      // 并行获取最近房间和订单数据
      const [recentRoomsData, ordersData] = await Promise.allSettled([
        apiService.getRecentRooms({ limit: 10 }),
        apiService.getMyOrders()
      ]);

      let sessionCount = 0;
      let dishCount = 0;

      // 处理最近房间数据
      if (recentRoomsData.status === 'fulfilled') {
        sessionCount = recentRoomsData.value ? recentRoomsData.value.length : 0;
      }

      // 处理订单数据
      if (ordersData.status === 'fulfilled') {
        const orders = ordersData.value || [];
        dishCount = orders.reduce((total, order) => {
          return total + (order.dishes ? order.dishes.reduce((sum, dish) => sum + (dish.quantity || 0), 0) : 0);
        }, 0);
      }

      // 更新统计数据
      this.setData({
        'userInfo.sessionCount': sessionCount,
        'userInfo.dishCount': dishCount,
        'userInfo.templateCount': 0 // 模板功能暂未实现
      });

    } catch (error) {
      // 统计数据加载失败，使用默认值
      this.setData({
        'userInfo.sessionCount': 0,
        'userInfo.dishCount': 0,
        'userInfo.templateCount': 0
      });
    }
  },

  // 加载最近会话
  async loadRecentSessions() {
    try {
      // 调用API获取最近房间
      const recentRooms = await apiService.getRecentRooms({ limit: 5 });
      
      // 根据API文档格式化房间数据
      const formattedSessions = (recentRooms || []).map(room => ({
        id: room.room_id || room.id,
        title: room.title || '未命名房间',
        type: room.type || 'temporary',
        typeText: room.type === 'permanent' ? '永久' : '临时',
        lastActive: this.getTimeAgo(room.last_activity_at || room.created_at),
        desc: `${room.members_count || 1}人参与 · 第${room.current_round || 1}轮`,
        status: room.status || 'active',
        creator: room.creator || null
      }));

      this.setData({
        recentSessions: formattedSessions.slice(0, 3) // 只显示最近3个
      });

    } catch (error) {
      // API失败时使用本地数据
      const localRooms = wx.getStorageSync('recentRooms') || [];
      const formattedLocalSessions = localRooms.slice(0, 3).map(room => ({
        id: room.room_id || room.id,
        title: room.title || '未命名房间',
        type: room.type || 'temporary',
        typeText: room.type === 'permanent' ? '永久' : '临时',
        lastActive: this.getTimeAgo(room.last_activity_at || room.created_at),
        desc: `${room.members_count || 1}人参与 · 第${room.current_round || 1}轮`,
        status: room.status || 'active',
        creator: room.creator || null
      }));

      this.setData({
        recentSessions: formattedLocalSessions
      });
    }
  },

  // 时间格式化方法
  getTimeAgo(timestamp) {
    if (!timestamp) return '未知时间';
    
    const now = new Date();
    const time = new Date(timestamp);
    const diff = now - time;
    
    const minutes = Math.floor(diff / (1000 * 60));
    const hours = Math.floor(diff / (1000 * 60 * 60));
    const days = Math.floor(diff / (1000 * 60 * 60 * 24));
    
    if (minutes < 1) return '刚刚';
    if (minutes < 60) return `${minutes}分钟前`;
    if (hours < 24) return `${hours}小时前`;
    if (days < 7) return `${days}天前`;
    
    return time.toLocaleDateString();
  },

  // 加载我的模板
  loadMyTemplates() {
    // 清除本地存储中的旧数据，确保只显示真实数据
    wx.removeStorageSync('myTemplates');
    
    this.setData({
      myTemplates: []
    });
  },

  // 编辑个人资料
  editProfile() {
    wx.showModal({
      title: '编辑资料',
      content: '编辑资料功能正在开发中！\n\n即将支持：\n• 修改头像\n• 更改昵称\n• 更新个人描述\n• 设置城市信息',
      showCancel: false,
      confirmText: '知道了',
      confirmColor: 'var(--color-primary)'
    });
  },

  // 创建会话
  createSession() {
    wx.showActionSheet({
      itemList: ['创建临时房间', '创建永久房间'],
      success: (res) => {
        if (res.tapIndex === 0) {
          // 跳转到创建房间页面，默认选择临时房间
          wx.navigateTo({
            url: '/pages/create-room/create-room?type=temporary',
            success: () => {
              wx.showToast({
                title: '跳转到创建房间',
                icon: 'success'
              });
            },
            fail: (error) => {
              wx.showToast({
                title: '跳转失败',
                icon: 'none'
              });
            }
          });
        } else if (res.tapIndex === 1) {
          // 跳转到创建房间页面，默认选择永久房间
          wx.navigateTo({
            url: '/pages/create-room/create-room?type=permanent',
            success: () => {
              wx.showToast({
                title: '跳转到创建房间',
                icon: 'success'
              });
            },
            fail: (error) => {
              wx.showToast({
                title: '跳转失败',
                icon: 'none'
              });
            }
          });
        }
      }
    });
  },

  // 加入会话
  joinSession() {
    wx.showActionSheet({
      itemList: ['输入口令加入', '扫码加入'],
      success: (res) => {
        if (res.tapIndex === 0) {
          wx.showModal({
            title: '输入口令',
            content: '输入口令功能正在开发中！\n\n即将支持：\n• 输入房间口令\n• 快速加入房间\n• 口令验证',
            showCancel: false,
            confirmText: '知道了',
            confirmColor: 'var(--color-primary)'
          });
        } else if (res.tapIndex === 1) {
          wx.scanCode({
            success: (res) => {
              wx.showModal({
                title: '扫码加入',
                content: '扫码功能正在开发中！\n\n即将支持：\n• 扫描房间二维码\n• 自动识别房间信息\n• 快速加入',
                showCancel: false,
                confirmText: '知道了',
                confirmColor: 'var(--color-primary)'
              });
            },
            fail: () => {
              wx.showToast({
                title: '扫码功能开发中',
                icon: 'none'
              });
            }
          });
        }
      }
    });
  },

  // 进入会话
  enterSession(e) {
    const session = e.currentTarget.dataset.session;
    
    if (!session || !session.id) {
      wx.showToast({
        title: '房间信息错误',
        icon: 'none'
      });
      return;
    }

    // 设置当前房间信息到全局数据
    const app = getApp();
    app.globalData.currentRoom = {
      roomId: session.id,
      roomTitle: session.title,
      roomType: session.type,
      participantCount: session.desc.match(/(\d+)人参与/)?.[1] || 1,
      currentRound: session.desc.match(/第(\d+)轮/)?.[1] || 1
    };

    // 跳转到点单页面
    wx.switchTab({
      url: '/pages/order/order',
      success: () => {
        wx.showToast({
          title: '进入房间成功',
          icon: 'success'
        });
      },
      fail: (error) => {
        wx.showToast({
          title: '进入房间失败',
          icon: 'none'
        });
      }
    });
  },

  // 使用模板
  useTemplate(e) {
    const template = e.currentTarget.dataset.template;
    wx.showToast({
      title: '使用模板功能开发中',
      icon: 'none'
    });
  },

  // 去历史记录（订单列表）
  goToHistory() {
    // orders是tabBar页面，需要使用switchTab
    wx.switchTab({
      url: '/pages/orders/orders',
      success: () => {
        // 不需要显示成功提示，因为这是tabBar切换
      },
      fail: (error) => {
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 去房间列表
  goToRoomList() {
    wx.navigateTo({
      url: '/pages/room-list/room-list',
      success: () => {
        // 跳转成功
      },
      fail: (error) => {
        wx.showToast({
          title: '跳转失败',
          icon: 'none'
        });
      }
    });
  },

  // 去我的模板
  goToTemplates() {
    wx.showToast({
      title: '模板管理页面开发中',
      icon: 'none'
    });
  },

  // 跳转到菜单管理
  goToMenuManagement() {
    wx.showModal({
      title: '功能开发中',
      content: '菜单管理功能正在开发中，敬请期待！\n\n您可以：\n• 使用默认菜单\n• 创建自定义菜单\n• 管理菜品信息',
      showCancel: true,
      cancelText: '知道了',
      confirmText: '查看详情',
      confirmColor: 'var(--color-primary)',
      success: (res) => {
        if (res.confirm) {
          wx.showToast({
            title: '功能即将上线',
            icon: 'none',
            duration: 2000
          });
        }
      }
    });
  },

  // 测试方法
  testClick() {
    wx.showToast({
      title: '点击事件正常',
      icon: 'success'
    });
  },

  // 去设置页面
  goToSettings() {
    wx.showToast({
      title: '设置页面开发中',
      icon: 'none'
    });
  },

  // 个人设置
  goToPersonalSettings() {
    wx.showModal({
      title: '个人设置',
      content: '个人设置功能正在开发中！\n\n即将支持：\n• 修改头像和昵称\n• 更新个人信息\n• 隐私设置\n• 账户安全',
      showCancel: false,
      confirmText: '知道了',
      confirmColor: 'var(--color-primary)'
    });
  },

  // 偏好设置
  goToPreferences() {
    wx.showModal({
      title: '偏好设置',
      content: '偏好设置功能正在开发中！\n\n即将支持：\n• 主题颜色选择\n• 通知偏好设置\n• 语言选择\n• 默认房间类型',
      showCancel: false,
      confirmText: '知道了',
      confirmColor: 'var(--color-primary)'
    });
  },

  // 数据管理 - 已移除，简化设置菜单

  // 帮助与反馈
  goToHelp() {
    wx.showActionSheet({
      itemList: ['使用帮助', '常见问题', '意见反馈', '联系客服'],
      success: (res) => {
        const actions = ['使用帮助', '常见问题', '意见反馈', '联系客服'];
        wx.showModal({
          title: actions[res.tapIndex],
          content: `${actions[res.tapIndex]}功能正在开发中，敬请期待！\n\n如有紧急问题，请联系客服。`,
          showCancel: false,
          confirmText: '知道了',
          confirmColor: 'var(--color-primary)'
        });
      }
    });
  },

  // 关于我们
  goToAbout() {
    wx.showModal({
      title: '关于聚点',
      content: '聚点美食小程序 v1.0\n\n让聚餐点餐变得简单有趣！\n\n聚在一起，点出美味\n\n© 2024 聚点团队',
      showCancel: false,
      confirmText: '知道了',
      confirmColor: 'var(--color-primary)'
    });
  },

  // 退出登录
  logout() {
    wx.showModal({
      title: '确认退出',
      content: '确定要退出登录吗？',
      confirmText: '退出',
      cancelText: '取消',
      confirmColor: 'var(--color-warning)',
      success: (res) => {
        if (res.confirm) {
          // 使用统一的登录守卫退出登录
          const authGuard = require('../../utils/authGuard.js');
          authGuard.logout();
          
          // 显示退出成功提示
          wx.showToast({
            title: '已退出登录',
            icon: 'success',
            duration: 1500
          });
        }
      }
    });
  }
});
